<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*     // es6定义父类
        class person {
            // constructor上的属性会被实例化对象使用，也可以被子类继承
            constructor(name, age) {
                this.name = name
                this.age = age
            }
            //address是实例化对象上的属性,可以不写在constructor中(不能被传参)
            address = "尚硅谷"
            //也是直接给实例化对象上添加方法
            do = function () {
                console.log("打游戏");
            }
            //给原型对象扩展方法
            study() {
                console.log('学前端');
            }
            //静态属性
            static say = "hello word"


        }
        class student extends person {
            //只要子类书写constructor,必须在constructor中调用super，因为子类没有自己的this,需要调用super来构建自己的this
            constructor(name, age, score) {
                //super的参数是传递给父类的constructor的
                suprr(name, age)
                this.score = score
            }
            stady = "react"
            sleep() {
                console.log("上课睡觉");
            }
        }
        //如果子类没有constructor的话，子类的传参是直接给父类
        //如果子类有constructor的话,则泽类的传参是传递给子类的constructor的
        const s1 = new student("laowang", 18, 100)
        console.log(s1, "s1");

 */

        // 定义父类
        /*    class person {
               constructor(name, age) {
                   this.name = name
                   this.age = age
               }
               // 实例化对象的属性不能修改参数
               addross = "尚硅谷"
               // 实例化对象的属性不能修改参数
               do = function () {
                   console.log("上课");
               }
               // 原型对象上的方法
               eat() {
                   console.log("吃得多");
               }
               // 构造函数的静态属性
               static say = "hello"


           }
           class student extends person {
               //只要子类书写constructor,必须在constructor中调用super，因为子类没有自己的this,需要调用super来构建自己的this
               constructor(name, age, score) {
                   // 继承父类的属性并构建自己的this
                   super(name, age)
                   // 子类实例自己的属性
                   this.score = score;

               }
               // 也是子类实例的属性，不过不能修改属性
               study = "qianduan";
               // 子类原型的方法
               sleep() {
                   console.log("上课睡觉");
               }

           }

           const p1=new student("老王",18,100)
           console.log("p1",p1); */

        /*  class person {
             constructor(name, age) {
                 this.name = name
                 this.age = age
             }
             address = "尚硅谷"

             do = function () {
                 console.log("do");
             }

             say() {
                 console.log("唱跳rap");
             }
             static change() {
                 console.log("让天下没有难学的技术");
             }

         }

         class student extends person {
             constructor(name, age, sex) {
                 super(age, name)
                 this.sex = sex
             }
             study = "学技术"

             do = function () {
                 console.log("找工作");
             }

             sleep() {
                 console.log("上课睡觉");
             }
             static techang = "changtiaorap"

         }

         const re = new student("laoliu", 18, "男")
         console.log(re); */

        // class person {
        //     constructor(name, age) {
        //         this.name = name
        //         this.age = age
        //     }
        //     address = "尚硅谷"

        //     eat() {
        //         console.log("吃大餐");
        //     }
        //     static do = "做美梦"
        // }
        // class student extends person {
        //     constructor(name, age, sex) {
        //         super(name, age)
        //         this.sex = sex
        //     }

        //     study = "学前端"
        //     run() {
        //         console.log("让天下没有难学的技术");
        //     }
        //     static do="做美梦"
        // }


        // const re=new student("张三",18,"男")
        // console.log(re);

        // 定义父类
        class person {
            // 父类实例的方法
            constructor(name, age) {
                this.name = name
                this.age = age
            }
            // 直接写等号也是实力的方法只不过不能传参修改属性
            do = function () {
                console.log("学前端");
            }
            // 父类原型的方法
            study() {
                console.log("学技术");
            }
            // 父类自己的方法
            static say() {
                console.log("吃打饭");
            }

        }
        // 定义子类
        class Student extends person {
            // 继承父类的方法
            constructor(name, age, id) {
                // super必须写参数相当于this.name=neme,,,
                super(name,age,)
                // 子类自己的实例属性
                this.id="0331"
            }
            // 也是子类实例的方法
            stu=function(){
                console.log("学技术2");
            }
            // 子类原型的方法
            doo(){
                console.log("打游戏");
            }
            // 子类自己的方法
            static eat="吃饭饭"
        }
        const p1=new Student("老王",18,"0331")
        console.log("p1",p1);
        console.log(p1.do);
    </script>
</body>

</html>